import { Toast, Dialog } from 'vant'

//数组排序，根据对象的某个属性值
const creatCompare = propertyName => {
  return function (obj1, obj2) {
    let value1 = Number(obj1[propertyName])
    let value2 = Number(obj2[propertyName])
    if (value1 < value2) {
      return -1
    } else if (value1 > value2) {
      return 1
    } else {
      return 0
    }
  }
}

//时间戳转化为普通日期格式，nS为时间戳
const formatDate = nS => {
  var now = new Date(nS);
  var year = now.getFullYear();  //取得4位数的年份
  var month = now.getMonth() + 1;  //取得日期中的月份，其中0表示1月，11表示12月
  var date = now.getDate();      //返回日期月份中的天数（1到31）
  var hour = now.getHours();     //返回日期中的小时数（0到23）
  var minute = now.getMinutes(); //返回日期中的分钟数（0到59）
  var second = now.getSeconds(); //返回日期中的秒数（0到59）
  return year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second;
}

// 检测字段
const checkData = (type, value) => {
  switch (type) {
    case "phoneNum": {
      let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
      if (!myreg.test(value) || value === "") {
        Toast({
          message: '手机号格式不正确',
          duration: 1500,
        })
        return false;
      } else {
        return true;
      }
    }
    case "smsCode": {
      if (value === "") {
        Toast({
          message: '请填写短信验证码',
          duration: 1500
        })
        return false;
      } else if (value.length != 6) {
        Toast({
          message: '短信验证码不正确',
          duration: 1500
        })
        return false;
      } else {
        return true;
      }
    }
    case "imgCode": {
      if (value === "") {
        Toast({
          message: '请填写图片验证码',
          duration: 1500,
        })
        return false;
      } else {
        return true;
      }
    }
  }
}

//防抖（短时间内多次触发同一事件，只执行最开始的一次，中间的不执行。）
//节流（连续触发事件但是在 n 秒中只执行一次函数。即 2n 秒内执行 2 次... 。会稀释函数的执行频率。）
const throttle = (fn, gapTime) => {
  if (gapTime == null || gapTime == undefined) {
    gapTime = 1000
  }
  let _lastTime = null
  // 返回新的函数
  return function () {
    let _nowTime = +new Date()
    if (_nowTime - _lastTime > gapTime || !_lastTime) {
      fn.apply(this, arguments) //将this和参数传给原函数
      _lastTime = _nowTime
    }
  }
}

//判断是否为微信浏览器
const isWeiXin = () => {
  var ua = window.navigator.userAgent.toLowerCase();
  if (ua.match(/MicroMessenger/i) == 'micromessenger') {
    return true;
  } else {
    return false;
  }
}

//判断url路径上是否存在某个参数 key-要查询的参数
const getUrlParam = (url, key) => {
  url = url || location.search;
  var arr = [], obj = {};
  if (key) {
    url.replace(new RegExp("[&?]" + key + "=([^&#]*)", "ig"), function (a, b) {
      arr.push(b);
    });
    return arr.join(",");
  } else {
    url.replace(/[?&]([^&#]+)=([^&#]*)/g, function (a, b, c) {
      obj[b] = c;
    });
    return obj;
  }
}

export default {
  isWeiXin,
  checkData,
  formatDate,
  throttle,
  creatCompare,
  getUrlParam
}
